Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / vendor / rns_filesync / tests / live / test_live_real_interfaces.py

Displaying Raw • Download


vendor/rns_filesync/tests/live/test_live_real_interfaces.py HEAD (2bf00cb3) Text, 7.18 KB

T8b949e"""Live sync over real network interfaces.

Strategies:
UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict) UDPInterface on free ports (real sockets, no AutoInterface conflict)
Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config Optional shared-instance attach to the host Reticulum config
AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack AutoInterface when not already bound by another stack
"""

Tff7b72from T7ee787__future__ Tff7b72import Te6edf3annotations

Tff7b72import T7ee787multiprocessing Tff7b72as T7ee787mp
Tff7b72import T7ee787os
Tff7b72import T7ee787queue
Tff7b72import T7ee787socket
Tff7b72import T7ee787textwrap
Tff7b72import T7ee787time
Tff7b72from T7ee787pathlib Tff7b72import Te6edf3Path

Tff7b72import T7ee787pytest

Tff7b72from T7ee787testsT7ee787.T7ee787e2eT7ee787.T7ee787rns_helpers Tff7b72import Te6edf3wait_until

Te6edf3pytestmark Tff7b72= Tb4b4b4[Te6edf3pytestTff7b72.Td2a8ffmarkTff7b72.Td2a8ffliveTb4b4b4]


Tff7b72def Td2a8ff_free_udp_portTb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657intTb4b4b4:
Tff7b72with Te6edf3socketTff7b72.Td2a8ffsocketTb4b4b4(Te6edf3socketTff7b72.Td2a8ffAF_INETTb4b4b4, Te6edf3socketTff7b72.Td2a8ffSOCK_DGRAMTb4b4b4) Tff7b72as Te6edf3sockTb4b4b4:
Te6edf3sockTff7b72.Td2a8ffbindTb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ff127.0.0.1Ta5d6ff"Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4)
Tff7b72return Tffa657intTb4b4b4(Te6edf3sockTff7b72.Td2a8ffgetsocknameTb4b4b4(Tb4b4b4)Tb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4)


Tff7b72def Td2a8ff_write_udp_pairTb4b4b4(Te6edf3cfg_aTb4b4b4: Te6edf3PathTb4b4b4, Te6edf3cfg_bTb4b4b4: Te6edf3PathTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Te6edf3port_a Tff7b72= Te6edf3_free_udp_portTb4b4b4(Tb4b4b4)
Te6edf3port_b Tff7b72= Te6edf3_free_udp_portTb4b4b4(Tb4b4b4)
Te6edf3shared_a Tff7b72= T79c0ff46000 Tff7b72+ Tb4b4b4(Te6edf3osTff7b72.Td2a8ffgetpidTb4b4b4(Tb4b4b4) Tff7b72% T79c0ff500Tb4b4b4) Tff7b72* T79c0ff2
Te6edf3shared_b Tff7b72= Te6edf3shared_a Tff7b72+ T79c0ff1

Tff7b72def Td2a8ffwriteTb4b4b4(Te6edf3pathTb4b4b4: Te6edf3PathTb4b4b4, Te6edf3nameTb4b4b4: Tffa657strTb4b4b4, Te6edf3listenTb4b4b4: Tffa657intTb4b4b4, Te6edf3peerTb4b4b4: Tffa657intTb4b4b4, Te6edf3sharedTb4b4b4: Tffa657intTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Te6edf3pathTff7b72.Td2a8ffmkdirTb4b4b4(Te6edf3parentsTff7b72=Tff7b72TrueTb4b4b4, Te6edf3exist_okTff7b72=Tff7b72TrueTb4b4b4)
Tb4b4b4(Te6edf3path Tff7b72/ Ta5d6ff"Ta5d6ffstorageTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffmkdirTb4b4b4(Te6edf3exist_okTff7b72=Tff7b72TrueTb4b4b4)
Tb4b4b4(Te6edf3path Tff7b72/ Ta5d6ff"Ta5d6ffconfigTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffwrite_textTb4b4b4(
Te6edf3textwrapTff7b72.Td2a8ffdedentTb4b4b4(
Ta5d6fffTa5d6ff"""
Ta5d6ff [reticulum]
Ta5d6ff enable_transport = Yes
Ta5d6ff share_instance = No
Ta5d6ff shared_instance_port = Tffd700{Te6edf3sharedTffd700}
Ta5d6ff instance_name = filesync_live_udp_Tffd700{Te6edf3nameTffd700}Ta5d6ff_Tffd700{Te6edf3listenTffd700}
Ta5d6ff panic_on_interface_error = No

Ta5d6ff [logging]
Ta5d6ff loglevel = 5

Ta5d6ff [interfaces]
Ta5d6ff [[UDP Tffd700{Te6edf3nameTffd700}Ta5d6ff]]
Ta5d6ff type = UDPInterface
Ta5d6ff enabled = yes
Ta5d6ff listen_ip = 127.0.0.1
Ta5d6ff listen_port = Tffd700{Te6edf3listenTffd700}
Ta5d6ff forward_ip = 127.0.0.1
Ta5d6ff forward_port = Tffd700{Te6edf3peerTffd700}
Ta5d6ff Ta5d6ff"""Tb4b4b4,
Tb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tff7b72+ Ta5d6ff"Tffea00\nTa5d6ff"Tb4b4b4,
Tb4b4b4)

Te6edf3writeTb4b4b4(Te6edf3cfg_aTb4b4b4, Ta5d6ff"Ta5d6ffaTa5d6ff"Tb4b4b4, Te6edf3port_aTb4b4b4, Te6edf3port_bTb4b4b4, Te6edf3shared_aTb4b4b4)
Te6edf3writeTb4b4b4(Te6edf3cfg_bTb4b4b4, Ta5d6ff"Ta5d6ffbTa5d6ff"Tb4b4b4, Te6edf3port_bTb4b4b4, Te6edf3port_aTb4b4b4, Te6edf3shared_bTb4b4b4)


Tff7b72def Td2a8ff_peer_bTb4b4b4(Te6edf3config_dirTb4b4b4: Tffa657strTb4b4b4, Te6edf3sync_dirTb4b4b4: Tffa657strTb4b4b4, Te6edf3ready_qTb4b4b4, Te6edf3cmd_qTb4b4b4, Te6edf3result_qTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Tff7b72import T7ee787traceback

Tff7b72tryTb4b4b4:
Tff7b72import T7ee787RNS

Tff7b72from T7ee787rns_filesyncT7ee787.T7ee787service Tff7b72import Te6edf3FileSyncService

Te6edf3RNSTff7b72.Td2a8ffloglevel Tff7b72= Te6edf3RNSTff7b72.Td2a8ffLOG_ERROR
Te6edf3RNSTff7b72.Td2a8ffReticulumTb4b4b4(Te6edf3config_dirTb4b4b4)
Te6edf3identity Tff7b72= Te6edf3RNSTff7b72.Td2a8ffIdentityTb4b4b4(Tb4b4b4)
Te6edf3service Tff7b72= Te6edf3FileSyncServiceTb4b4b4(
Te6edf3identityTff7b72=Te6edf3identityTb4b4b4,
Te6edf3sync_directoryTff7b72=Te6edf3sync_dirTb4b4b4,
Te6edf3reticulumTff7b72=Te6edf3RNSTff7b72.Td2a8ffReticulumTff7b72.Td2a8ffget_instanceTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3dest Tff7b72= Te6edf3serviceTff7b72.Td2a8ffstartTb4b4b4(Te6edf3monitorTff7b72=Tff7b72TrueTb4b4b4, Te6edf3announce_intervalTff7b72=T79c0ff8Tb4b4b4)
Te6edf3ready_qTff7b72.Td2a8ffputTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4, Ta5d6ff"Ta5d6ffidentityTa5d6ff"Tb4b4b4: Te6edf3identityTff7b72.Td2a8ffhashTff7b72.Td2a8ffhexTb4b4b4(Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffdestinationTa5d6ff"Tb4b4b4: Te6edf3destTb4b4b4}Tb4b4b4)
Tff7b72while Tff7b72TrueTb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3cmd Tff7b72= Te6edf3cmd_qTff7b72.Td2a8ffgetTb4b4b4(Te6edf3timeoutTff7b72=T79c0ff2.0Tb4b4b4)
Tff7b72except Te6edf3queueTff7b72.Td2a8ffEmptyTb4b4b4:
Te6edf3serviceTff7b72.Td2a8ffannounce_nowTb4b4b4(Tb4b4b4)
Tff7b72continue
Tff7b72if Te6edf3cmd Tff7b72is Tff7b72None Tff7b72or Te6edf3cmdTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffopTa5d6ff"Tb4b4b4) Tff7b72== Ta5d6ff"Ta5d6ffstopTa5d6ff"Tb4b4b4:
Te6edf3serviceTff7b72.Td2a8ffstopTb4b4b4(Tb4b4b4)
Te6edf3result_qTff7b72.Td2a8ffputTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6ffstoppedTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4}Tb4b4b4)
Tff7b72break
Tff7b72except Tf85149Exception Tff7b72as Te6edf3excTb4b4b4:
Te6edf3ready_qTff7b72.Td2a8ffputTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4: Tff7b72FalseTb4b4b4, Ta5d6ff"Ta5d6fferrorTa5d6ff"Tb4b4b4: Tffa657strTb4b4b4(Te6edf3excTb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftraceTa5d6ff"Tb4b4b4: Te6edf3tracebackTff7b72.Td2a8ffformat_excTb4b4b4(Tb4b4b4)Tb4b4b4}Tb4b4b4)


Tff7b72def Td2a8ff_peer_aTb4b4b4(
Te6edf3config_dirTb4b4b4: Tffa657strTb4b4b4,
Te6edf3sync_dirTb4b4b4: Tffa657strTb4b4b4,
Te6edf3peer_identity_hexTb4b4b4: Tffa657strTb4b4b4,
Te6edf3peer_destination_hexTb4b4b4: Tffa657strTb4b4b4,
Te6edf3ready_qTb4b4b4,
Te6edf3cmd_qTb4b4b4,
Te6edf3result_qTb4b4b4,
Tb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Tff7b72import T7ee787traceback

Tff7b72tryTb4b4b4:
Tff7b72import T7ee787RNS

Tff7b72from T7ee787rns_filesyncT7ee787.T7ee787service Tff7b72import Te6edf3FileSyncService

Te6edf3RNSTff7b72.Td2a8ffloglevel Tff7b72= Te6edf3RNSTff7b72.Td2a8ffLOG_ERROR
Te6edf3RNSTff7b72.Td2a8ffReticulumTb4b4b4(Te6edf3config_dirTb4b4b4)
Te6edf3identity Tff7b72= Te6edf3RNSTff7b72.Td2a8ffIdentityTb4b4b4(Tb4b4b4)
Te6edf3service Tff7b72= Te6edf3FileSyncServiceTb4b4b4(
Te6edf3identityTff7b72=Te6edf3identityTb4b4b4,
Te6edf3sync_directoryTff7b72=Te6edf3sync_dirTb4b4b4,
Te6edf3reticulumTff7b72=Te6edf3RNSTff7b72.Td2a8ffReticulumTff7b72.Td2a8ffget_instanceTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3serviceTff7b72.Td2a8ffstartTb4b4b4(Te6edf3monitorTff7b72=Tff7b72TrueTb4b4b4, Te6edf3announce_intervalTff7b72=T79c0ff8Tb4b4b4)
Te6edf3connected Tff7b72= Tb4b4b4{Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4: Tff7b72FalseTb4b4b4}
Te6edf3deadline Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4) Tff7b72+ T79c0ff60.0
Te6edf3targets Tff7b72= Tb4b4b4[Te6edf3peer_identity_hexTb4b4b4, Te6edf3peer_destination_hexTb4b4b4]
Tff7b72while Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4) Tff7b72< Te6edf3deadline Tff7b72and Tff7b72not Te6edf3connectedTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72for Te6edf3target Tff7b72in Te6edf3targetsTb4b4b4:
Te6edf3connected Tff7b72= Te6edf3serviceTff7b72.Td2a8ffconnect_peerTb4b4b4(Te6edf3targetTb4b4b4, Te6edf3timeoutTff7b72=T79c0ff8.0Tb4b4b4)
Tff7b72if Te6edf3connectedTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72break
Tff7b72if Tff7b72not Te6edf3connectedTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4)Tb4b4b4:
Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff1.0Tb4b4b4)
Te6edf3ready_qTff7b72.Td2a8ffputTb4b4b4(
Tb4b4b4{Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4, Ta5d6ff"Ta5d6ffconnectedTa5d6ff"Tb4b4b4: Te6edf3connectedTb4b4b4, Ta5d6ff"Ta5d6ffidentityTa5d6ff"Tb4b4b4: Te6edf3identityTff7b72.Td2a8ffhashTff7b72.Td2a8ffhexTb4b4b4(Tb4b4b4)Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tff7b72while Tff7b72TrueTb4b4b4:
Te6edf3cmd Tff7b72= Te6edf3cmd_qTff7b72.Td2a8ffgetTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3cmd Tff7b72is Tff7b72None Tff7b72or Te6edf3cmdTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffopTa5d6ff"Tb4b4b4) Tff7b72== Ta5d6ff"Ta5d6ffstopTa5d6ff"Tb4b4b4:
Te6edf3serviceTff7b72.Td2a8ffstopTb4b4b4(Tb4b4b4)
Te6edf3result_qTff7b72.Td2a8ffputTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6ffstoppedTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4}Tb4b4b4)
Tff7b72break
Tff7b72except Tf85149Exception Tff7b72as Te6edf3excTb4b4b4:
Te6edf3ready_qTff7b72.Td2a8ffputTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4: Tff7b72FalseTb4b4b4, Ta5d6ff"Ta5d6fferrorTa5d6ff"Tb4b4b4: Tffa657strTb4b4b4(Te6edf3excTb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftraceTa5d6ff"Tb4b4b4: Te6edf3tracebackTff7b72.Td2a8ffformat_excTb4b4b4(Tb4b4b4)Tb4b4b4}Tb4b4b4)


Tff7b72def Td2a8ff_run_two_peer_liveTb4b4b4(Te6edf3tmp_pathTb4b4b4: Te6edf3PathTb4b4b4, Te6edf3write_configsTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Te6edf3dir_a Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffaTa5d6ff"
Te6edf3dir_b Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffbTa5d6ff"
Te6edf3cfg_a Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffcfg_aTa5d6ff"
Te6edf3cfg_b Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffcfg_bTa5d6ff"
Te6edf3dir_aTff7b72.Td2a8ffmkdirTb4b4b4(Tb4b4b4)
Te6edf3dir_bTff7b72.Td2a8ffmkdirTb4b4b4(Tb4b4b4)
Te6edf3write_configsTb4b4b4(Te6edf3cfg_aTb4b4b4, Te6edf3cfg_bTb4b4b4)
Tb4b4b4(Te6edf3dir_b Tff7b72/ Ta5d6ff"Ta5d6fflive.txtTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffwrite_textTb4b4b4(Ta5d6ff"Ta5d6fflive-network-okTa5d6ff"Tb4b4b4)

Te6edf3ctx Tff7b72= Te6edf3mpTff7b72.Td2a8ffget_contextTb4b4b4(Ta5d6ff"Ta5d6ffspawnTa5d6ff"Tb4b4b4)
Te6edf3ready_bTb4b4b4, Te6edf3cmd_bTb4b4b4, Te6edf3res_b Tff7b72= Te6edf3ctxTff7b72.Td2a8ffQueueTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3ctxTff7b72.Td2a8ffQueueTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3ctxTff7b72.Td2a8ffQueueTb4b4b4(Tb4b4b4)
Te6edf3ready_aTb4b4b4, Te6edf3cmd_aTb4b4b4, Te6edf3res_a Tff7b72= Te6edf3ctxTff7b72.Td2a8ffQueueTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3ctxTff7b72.Td2a8ffQueueTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3ctxTff7b72.Td2a8ffQueueTb4b4b4(Tb4b4b4)

Te6edf3proc_b Tff7b72= Te6edf3ctxTff7b72.Td2a8ffProcessTb4b4b4(
Te6edf3targetTff7b72=Te6edf3_peer_bTb4b4b4,
Te6edf3argsTff7b72=Tb4b4b4(Tffa657strTb4b4b4(Te6edf3cfg_bTb4b4b4)Tb4b4b4, Tffa657strTb4b4b4(Te6edf3dir_bTb4b4b4)Tb4b4b4, Te6edf3ready_bTb4b4b4, Te6edf3cmd_bTb4b4b4, Te6edf3res_bTb4b4b4)Tb4b4b4,
Te6edf3daemonTff7b72=Tff7b72TrueTb4b4b4,
Tb4b4b4)
Te6edf3proc_bTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Te6edf3info_b Tff7b72= Te6edf3ready_bTff7b72.Td2a8ffgetTb4b4b4(Te6edf3timeoutTff7b72=T79c0ff45Tb4b4b4)
Tff7b72assert Te6edf3info_bTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3info_b
Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff1.0Tb4b4b4)

Te6edf3proc_a Tff7b72= Te6edf3ctxTff7b72.Td2a8ffProcessTb4b4b4(
Te6edf3targetTff7b72=Te6edf3_peer_aTb4b4b4,
Te6edf3argsTff7b72=Tb4b4b4(
Tffa657strTb4b4b4(Te6edf3cfg_aTb4b4b4)Tb4b4b4,
Tffa657strTb4b4b4(Te6edf3dir_aTb4b4b4)Tb4b4b4,
Te6edf3info_bTb4b4b4[Ta5d6ff"Ta5d6ffidentityTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3info_bTb4b4b4[Ta5d6ff"Ta5d6ffdestinationTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3ready_aTb4b4b4,
Te6edf3cmd_aTb4b4b4,
Te6edf3res_aTb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3daemonTff7b72=Tff7b72TrueTb4b4b4,
Tb4b4b4)
Te6edf3proc_aTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72tryTb4b4b4:
Te6edf3info_a Tff7b72= Te6edf3ready_aTff7b72.Td2a8ffgetTb4b4b4(Te6edf3timeoutTff7b72=T79c0ff90Tb4b4b4)
Tff7b72assert Te6edf3info_aTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3info_a
Tff7b72assert Te6edf3info_aTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffconnectedTa5d6ff"Tb4b4b4, Tb4b4b4{Tb4b4b4}Tb4b4b4)Tff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4)Tb4b4b4, Te6edf3info_a
Tff7b72assert Te6edf3wait_untilTb4b4b4(
Tff7b72lambdaTb4b4b4: Tb4b4b4(
Tb4b4b4(Te6edf3dir_a Tff7b72/ Ta5d6ff"Ta5d6fflive.txtTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffis_fileTb4b4b4(Tb4b4b4)
Tff7b72and Tb4b4b4(Te6edf3dir_a Tff7b72/ Ta5d6ff"Ta5d6fflive.txtTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffread_textTb4b4b4(Tb4b4b4) Tff7b72== Ta5d6ff"Ta5d6fflive-network-okTa5d6ff"
Tb4b4b4)Tb4b4b4,
Te6edf3timeoutTff7b72=T79c0ff60.0Tb4b4b4,
Tb4b4b4)
Tff7b72finallyTb4b4b4:
Tff7b72for Te6edf3cmdTb4b4b4, Te6edf3resTb4b4b4, Te6edf3proc Tff7b72in Tb4b4b4(Tb4b4b4(Te6edf3cmd_aTb4b4b4, Te6edf3res_aTb4b4b4, Te6edf3proc_aTb4b4b4)Tb4b4b4, Tb4b4b4(Te6edf3cmd_bTb4b4b4, Te6edf3res_bTb4b4b4, Te6edf3proc_bTb4b4b4)Tb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3cmdTff7b72.Td2a8ffputTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6ffopTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffstopTa5d6ff"Tb4b4b4}Tb4b4b4)
Te6edf3resTff7b72.Td2a8ffgetTb4b4b4(Te6edf3timeoutTff7b72=T79c0ff10Tb4b4b4)
Tff7b72except Tf85149ExceptionTb4b4b4:
Tff7b72pass
Te6edf3procTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3timeoutTff7b72=T79c0ff5Tb4b4b4)
Tff7b72if Te6edf3procTff7b72.Td2a8ffis_aliveTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3procTff7b72.Td2a8ffterminateTb4b4b4(Tb4b4b4)


Tf0883e@pytestTff7b72.Td2a8ffmarkTff7b72.Td2a8fftimeoutTb4b4b4(T79c0ff150Tb4b4b4)
Tff7b72def Td2a8fftest_live_udp_interface_two_peer_syncTb4b4b4(Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
T8b949e"""Sync over real UDPInterface sockets (not isolated TCPServer pair)."""
Te6edf3_run_two_peer_liveTb4b4b4(Te6edf3tmp_pathTb4b4b4, Te6edf3_write_udp_pairTb4b4b4)


Tf0883e@pytestTff7b72.Td2a8ffmarkTff7b72.Td2a8fftimeoutTb4b4b4(T79c0ff150Tb4b4b4)
Tff7b72def Td2a8fftest_live_tcp_harness_still_worksTb4b4b4(Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
Tff7b72from T7ee787testsT7ee787.T7ee787e2eT7ee787.T7ee787rns_helpers Tff7b72import Te6edf3TwoPeerHarness

Te6edf3h Tff7b72= Te6edf3TwoPeerHarnessTb4b4b4(Te6edf3tmp_pathTb4b4b4)
Tb4b4b4(Te6edf3hTff7b72.Td2a8ffdir_b Tff7b72/ Ta5d6ff"Ta5d6fftcp-live.txtTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffwrite_textTb4b4b4(Ta5d6ff"Ta5d6fftcp-okTa5d6ff"Tb4b4b4)
Te6edf3hTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72tryTb4b4b4:
Tff7b72assert Te6edf3wait_untilTb4b4b4(
Tff7b72lambdaTb4b4b4: Tb4b4b4(
Tb4b4b4(Te6edf3hTff7b72.Td2a8ffdir_a Tff7b72/ Ta5d6ff"Ta5d6fftcp-live.txtTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffis_fileTb4b4b4(Tb4b4b4)
Tff7b72and Tb4b4b4(Te6edf3hTff7b72.Td2a8ffdir_a Tff7b72/ Ta5d6ff"Ta5d6fftcp-live.txtTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffread_textTb4b4b4(Tb4b4b4) Tff7b72== Ta5d6ff"Ta5d6fftcp-okTa5d6ff"
Tb4b4b4)Tb4b4b4,
Te6edf3timeoutTff7b72=T79c0ff60.0Tb4b4b4,
Tb4b4b4)
Tff7b72finallyTb4b4b4:
Te6edf3hTff7b72.Td2a8ffstopTb4b4b4(Tb4b4b4)


Tff7b72def Td2a8fftest_live_host_reticulum_config_presentTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3path Tff7b72= Te6edf3PathTb4b4b4(Te6edf3osTff7b72.Td2a8ffenvironTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffRNS_FILESYNC_LIVE_CONFIGTa5d6ff"Tb4b4b4, Te6edf3PathTff7b72.Td2a8ffhomeTb4b4b4(Tb4b4b4) Tff7b72/ Ta5d6ff"Ta5d6ff.reticulumTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72if Tff7b72not Tb4b4b4(Te6edf3path Tff7b72/ Ta5d6ff"Ta5d6ffconfigTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffis_fileTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3pytestTff7b72.Td2a8ffskipTb4b4b4(Ta5d6ff"Ta5d6ffhost Reticulum config not presentTa5d6ff"Tb4b4b4)
Tff7b72assert Tb4b4b4(Te6edf3path Tff7b72/ Ta5d6ff"Ta5d6ffconfigTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffis_fileTb4b4b4(Tb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────